1. Field of the Invention
This invention relates to electronic circuitry and, more particularly, to a latch coupled to retain data sent from either a data bus or a programmable storage element, wherein the latch avoids relatively high current paths when the storage element is being accessed during programming. This also helps reduce circuit size and improves overall reliability.
2. Description of the Related Art
The following descriptions and examples are given as background information only.
Most electronic subsystems have data storage capability. For example, bi-stable circuits such as flip-flops can maintain data in one of two binary logic values depending on the last input to the flip-flop. A popular bi-stable circuit that will maintain the logic value until rewritten is generally known as a latch.
A latch can be formed in many ways. For example, a static random access memory (SRAM) cell consists essentially of a pair of cross-coupled inverters that latch a logic value until rewritten with another logic value. The SRAM latch cell can store the true and complementary logic values sent to the latch from, for example, a data bus. The latch logic values can later be read when, for example, an execution unit executes a fetch operation from an addressed storage cell.
Unlike many types of memory cells that require periodic refresh, a latch will retain the stored data without requiring a refresh until such time as power is removed from the latch. There are many applications that require permanent storage of data even though power is unavailable to maintain that storage. For example, read-only memory (ROM) storage cells can be programmed, and the programmed state retained in the absence of power. ROM storage media is often used in software applications that do not readily change or are needed as a boot-up driver. For example, a ROM is typically used as part of the basic input/output system (BIOS) code, and can be used in look-up tables and character generators.
Once programmed, ROMs will often maintain their programmed state depending on the type of ROM used. Generally speaking, however, storage devices that maintain a stored logic value after power is removed are known as non-volatile memory elements. Conversely, storage elements that lose the stored state once power is removed are known as volatile memory elements.
A latch is typically known as a volatile storage element, whereas masked ROMs or field-programmable ROMs (i.e., PROM) are known as non-volatile memory. Other forms of non-volatile memory include EPROM and EEPROM. The primary difference between PROM and EPROM (or EEPROM) is that the former are generally programmable only once, and thereafter cannot be erased. The latter can be erased either through ultraviolet light or electrical erasure. Flash memory also is used for such applications requiring erasure and non-volatile features.
Electronic subsystems often use both volatile and non-volatile memory. The volatile memory is usually placed within an integrated circuit separate and apart from an integrated circuit that embodies the non-volatile memory. There may be instances, however, where both volatile and non-volatile storage elements are on the same integrated circuit. In this instance, however, data targeted for the volatile memory storage elements is generally altogether different from the data targeted for the non-volatile storage elements since the use of that data is altogether different—i.e., has different applications.
It would be desirable to implement a storage device that has both a volatile and non-volatile feature. For example, if data is to be temporarily held when power is present, the storage device utilizes a latch into which the data is written and can thereafter be read. If that data being written into the latch is of sufficient importance that it is to be maintained after power is removed, the storage device would also desirably include a non-volatile storage element into which the latched data can be written and later retrieved even though power is lost in the interim. The desired storage device which functions essentially as a latch, but also has non-volatile storage, represents an improvement over conventional storage devices that are dedicated either as a latch or as non-volatile storage, but not both.
In addition to the desirability of having a dual-purpose storage device over conventional system that do not serve a dual-purpose role, it would be further desirable to separate certain deleterious features that occur when programming (writing) and reading into and from the non-volatile storage element from the normal operation of the latch. For example, it would be desirable to eliminate any current paths within a latch caused whenever the non-volatile storage element is written to, or programmed. It would further be desirable to achieve these goals without increasing the overall size of the dual-purpose storage device. Finally, implementing such storage elements in sub-quarter micron integrated circuit process technologies without additional process steps needed to accommodate higher programming voltages is challenging yet highly desirable.